/*
    日志消息类，用来存储一条日志消息所需要的数据
        1.日志输出时间
        2.日志等级
        3.日志所属源文件
        4.日志所属源文件行号
        5.线程ID
        6.日志器名称
        7.日志主体内容
*/

#pragma once

#include <iostream>
#include <string>
#include <thread>
#include "level.hpp"
#include "util.hpp"

namespace logging
{
    struct logMessage
    {
        logMessage(logLevel::value level, const std::string &file, size_t line, const std::string &logger, const std::string &msg)
            : _ctime(util::Date::getTime()),
              _tid(std::this_thread::get_id()),
              _src_file(file),
              _line(line),
              _rank(level),
              _payload(msg),
              _logger(logger)
        {}

        time_t _ctime;         // 输出时间的时间，时间戳
        size_t _line;          // 行号
        std::thread::id _tid;  // 线程ID
        logLevel::value _rank; // 日志等级
        std::string _src_file; // 日志所属源文件
        std::string _payload;  // 日志有效载荷
        std::string _logger;   // 日志器名称
    };
}